<?php
/**
 * Created by 荣耀电竞.
 * User: 林子彦 <278805354@qq.com>
 * Date: 2018/6/23 0023
 * Time: 17:18
 */
namespace App\Shop\Repositories;
use App\Shop\Contracts\CartInterface;
use App\Shop\Models\CartModel;

class  DbCartRepository implements CartInterface{
    /**
     * 购物车商品总金额
     */
    private $cart_all_price = 0;

    /**
     * 购物车商品总数
     */
    private $cart_goods_num = 0;
    /**
     * 购物车模型
     * @return CartModel
     */
    public function getCartModel(){
        return app()->make(CartModel::class);
    }
    /**
     * 检查购物车内商品是否存在
     *
     * @param
     */
    public function checkCart($condition = array()) {
        return $this->getCartModel()->newQuery()->where($condition)->first();
    }

    /**
     * 会员购物车内商品数
     *
     * @param int $memberId
     * @return int
     */
    public function countCartByMemberId($memberId)
    {
        return (int) $this->getCartModel()->newQuery()->where(array(
            'buyer_id' => (int) $memberId,
        ))->count();
    }
    /**
     * 将商品添加到购物车中
     * @param array $data   商品数据信息
     * @param string $save_type 保存类型，可选值 db,cookie
     * @param int $quantity 购物数量
     */
    public function addCart($data = array(), $save_type = '', $quantity = null) {
        $method = '_addCart'.ucfirst($save_type);
        $insert = $this->$method($data,$quantity);
        //更改购物车总商品数和总金额，传递数组参数只是给DB使用
        $this->getCartNum($save_type,array('buyer_id'=>$data['buyer_id']));
        return $insert;
    }
    /**
     * cookie加入购物车
     */
    private function _addCookieCart(){

    }

    /**
     * 数据库加入购物车
     */
    private function _addDbCart(){

    }

}